Adaptable user input interface

ABSTRACT

A user input interface on a mobile device may employ a set of routines to control computing functions on a computer. Computing functions may be associated with elements of the user input interface, such that the elements may be used to control the associated computing functions. The associations of computing functions and user input interface elements may be stored in a database.

BACKGROUND

The present disclosure relates generally to the field of computingfunction execution, and more particularly to generating a user inputinterface to control a software application.

Most modern application interfaces, especially modern healthcareapplication interfaces, include a wide variety of executable functions.Modern applications may offer a combination of standard keyboardshortcuts to execute the various computing functions and/or provideusers the ability to configure keyboard shortcuts. A modern userinterface may include some sort of graphical interface whereicon-associated shortcuts may execute computing functions, and/or adialog box that allows a user to select a function and then press a keyor key-combination to associate the execution of the function, or a setof functions, with the key/key-combination.

SUMMARY

Disclosed herein are embodiments of a method, system, and computerprogram product for interacting with a computer via a user inputinterface on a mobile device.

A set of routines are executed on a computer to control a plurality ofcomputing functions via a user input interface. A selected computingfunction of the computer is associated with at least one element of theuser input interface, such that the at least one element controls theselected computing function. The association of the selected computingfunction is stored with the at least one element of the user inputinterface.

The above summary is not intended to describe each illustratedembodiment or every implementation of the present disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings included in the present disclosure are incorporated into,and form part of, the specification. They illustrate embodiments of thepresent disclosure and, along with the description, serve to explain theprinciples of the disclosure. The drawings are only illustrative oftypical embodiments and do not limit the disclosure.

FIG. 1A depicts a block diagram of an example layout of a user inputinterface displayed on the touchscreen of an external controller device,according to embodiments.

FIG. 1B depicts a block diagram of an example computing environment inwhich embodiments of the present disclosure may be implemented.

FIG. 2 illustrates a flowchart of a method for generating an element ofa user input interface, the element associated with a computingfunction, according to embodiments.

FIG. 3 illustrates a flowchart of a method for generating a user inputinterface layout based on a computing function profile, according toembodiments.

FIG. 4 illustrates a flowchart of a method for adding and removingelements from a user input interface based on monitored user input,according to embodiments.

FIG. 5 illustrates a flowchart of a method for executing a computingfunction via a user input interface element, according to embodiments.

FIG. 6 depicts a block diagram of an example computing environment inwhich embodiments of the present disclosure may be implemented.

FIG. 7 illustrates a high-level block diagram of an example computersystem that may be used in implementing embodiments of the presentdisclosure.

While the embodiments described herein are amenable to variousmodifications and alternative forms, specifics thereof have been shownby way of example in the drawings and will be described in detail. Itshould be understood, however, that the particular embodiments describedare not to be taken in a limiting sense. On the contrary, the intentionis to cover all modifications, equivalents, and alternatives fallingwithin the spirit and scope of the invention.

DETAILED DESCRIPTION

Aspects of the present disclosure relate to computing functionexecution, and more particularly to generating a user input interface tocontrol a software application. While the present disclosure is notnecessarily limited to such applications, various aspects of thedisclosure may be appreciated through a discussion of various examplesusing this context.

Usability is one of the main concerns that application developers anddesigners keep in mind when creating new computer programs. Theusability of an application is a key factor to determine the success ofthe application itself. This is particularly true for mobileapplications. Users of mobile applications expect sophisticated design,high-fidelity and intuitive user interfaces, and high performance. Theseare the main reasons why native applications, those implemented directlyon the operating system using the native Application ProgrammingInterfaces (APIs) of the target mobile platform, have overtaken Web andhybrid applications, those written in HTML, CSS and JavaScript, andrunning on the device's browser. Mobile applications with poor usabilitytend to receive negative reviews and may eventually fail.

Usability is even more impactful in certain environments, such as, forexample, healthcare applications. The main concern behind the usabilityof such applications is related less to success on the market, andrelated more to the fact that a poorly designed application, difficultto use and with an arcane user interface, may effectively hinder thefunctionality of the application itself. If a healthcare application isvery difficult to use, a healthcare provider using it to examine apatient may make mistakes, or may inadvertently neglect to use advancedfeatures of the application if such features are hard to access. Thismay eventually negatively affect the health of the patient and even leadto medical mistakes, worsening of the patient's health.

The present disclosure provides a method for generating shortcuts to anexternal controller device with interactive graphic display capability(e.g., user input interface), such as an IPAD or other computing tablet,or keyboard with LED/LCD keys or graphical touchscreens. In embodiments,a user may employ a stylus, fingers, or other tools for interacting witha touchscreen or other physical interface displaying one or more visualelements of a user input interface. The user may adjust the location,layout, and other attributes or specifications of the elements of theuser input interface (UII) by activating a configuration mode via adialog box, speech command, etc. The user may receive a visual or otherconfirmation that the configuration mode is active. In embodiments, thevisual confirmation may be a change in appearance of the tools, aconfirmation message, or the interactive tools or elements exhibitinganimation (e.g., the elements may “shake”), or otherwise indicate thatthe configuration mode has been activated.

In embodiments, a graphical representation of a keyboard or of a targetapplication's GUI may appear on the screen of the external controllerdevice. In embodiments, a graphical representation of the UII may appearon a display coupled to a computer system running the targetapplication. The user may drag an interface element to a depictedkeyboard location to create a keyboard shortcut associated with thatelement. In embodiments, the user may drag a computing function from arepresentation of a target application's menu(s) and/or GUI to aninterface element to create a shortcut associated with that interfaceelement. A target application may be the application or a set ofapplications the user wants to control using the external controllerdevice. The keyboard depiction or other representation may then beupdated to include a reference to that element. The user may laterrecall the keyboard depiction or other representation to furtherconfigure the shortcuts, view them, copy them to another user's userinput interface, etc. In embodiments, the computer system may beconnected to a keyboard with LCD/LED keys, or keys that can otherwise bedynamically graphically modified, and the physical keyboard itself maybe updated to represent the new element associations.

In embodiments, the external controller device may, via the UII, scan atarget application to determine an array of computing functions byevaluating interactive elements of the target application's GUI and/ormenus and populate a list of computing functions that a user may use toassociate with interface elements.

In embodiments, an element may be an interactive area of a graphicaluser interface. For example, in embodiments, an element may be aclickable icon, a customizable and interactive polygon displayed on atouchscreen, etc. Similarly, the UII of the external controller devicemay automatically respond to a change in user, application, or otherchanges in conditions.

In embodiments, an IPAD or other computing tablet or smartphone devicemay be used as the external controller device and coupled to thecomputer system running the target application via a USB connection,WIFI connection, or any other physical or non-physical communicativeconnection with the computer system. In embodiments, an API may mediatethe connection between the external controller device and the targetapplication. In embodiments, the external controller device may employmacros to execute computing functions on the target application. Inembodiments, when the configuration mode is active, the system maydisplay a graphic or some other indicator to alert the user that thecontroller may be in a configuration mode. The user may drag one or moreelements to an indicated location on the computer system screen toconfigure the layout/position/location of the elements of the UII. As aresult, the elements on the UII of the external controller device may beconfigured so that the user can subsequently use the external controllerdevice to execute computing functions in the target application. Thecomputing system may store the configuration of the UII elements asrules or as a part of a computing function profile associated with theuser.

In embodiments, the computing function profiles may be associated withone or more conditions. Conditions may include informative aspects thatmay impact the arrangement and type of elements displayed on the userinput interface. For example, conditions may include the user's jobtitle or role, the type of program being used, the type of tasks beingperformed by the target application, the subject of the particular task,the dimensions of a user's hand, ergonomic data related to the user,etc. Using an example of a medical imaging program as a targetapplication, conditions may include the user's role (e.g., doctor,nurse, technologist, technician, etc.), the type of exam/image (e.g.,image to diagnose knee pain, image to identify unknown mass, etc.), theimaging modality (e.g., MRI, X-ray, CT scan, etc.), body part (e.g.,knee, brain, spine, lung, etc.), user characteristics (e.g.,left-handed, poor vision, arthritis, carpal tunnel, etc.), etc. As aresult, when subsequently used, the external controller device may, forexample, display a layout of elements when a particular user is viewinga CT, then automatically switch to another layout when the user isviewing an MRI.

In embodiments, the configuration mode of the UII may employ machinelearning to provide an automated configuration mode. In embodiments, thesystem may monitor the user's behavior to automatically determine a UIIlayout that may optimize the user's experience, according to conditionsassociated with the user. The system may further monitor user behaviorto add, remove, or rearrange elements on the UII to refine and furtheroptimize the user's experience.

The present disclosure enables users to arrange a graphic display (e.g.,UII layout) of elements associated with the computing functions theydesire and/or use most, and may be an aide to users with low vision,repetitive motion injuries, or other impairments, by compensating (e.g.,enlarging elements/text, optimizing layout to minimize hand and fingermotions, etc.) for an individual user's needs. The present disclosuremay also decrease the learning curve associated with learning a newapplication, and thereby decrease training time for new users.

Turning now to the figures, FIG. 1A depicts a block diagram of anexample layout of a user input interface displayed on the touchscreen ofan external controller device 100, according to embodiments. Inembodiments, the user input interface (UII) may be displayed on thetouchscreen of a mobile computing device (e.g., an external controllerdevice), such as a computing tablet device, smart phone, IPAD, or othermobile computing device. In embodiments, the device may include atouchscreen capable of displaying a number of icons/elements withattributes specified by a user or a user input interface generator, suchas the UII generator 668 of FIG. 6. In embodiments, thesize/shape/location/appearance and other attributes of elements may bepredetermined by the UII generator, according to conditions associatedwith the user and/or according to monitored user behaviors.

In embodiments, the UII 100 may include a control panel 105. The controlpanel 105 may provide the user with the configuration tools necessary togenerate UII elements, such as elements 110A-J, as well as the toolsnecessary to associate those elements with computing functions in thetarget application. Tools to generate UII elements may include tools todefine the size/shape/color/location and other attributes of elements.Tools for associating elements with computing functions may includetools to identify the target application; cross-applicationdrag-and-drop tools; and application program interface (API) routines,macros, or any other means for associating an input with a targetapplication's computing function. Any number of elements may begenerated, according to embodiments.

In embodiments, a virtual depiction of the UII may be generated anddisplayed, for configuration purposes, on a display connected to thecomputer system (e.g., the computer 602 of FIG. 6) hosting a targetapplication. In embodiments, the computer system may detect theconnection, via, for example, USB, BLUETOOTH, WIFI, or othercommunicative connection, of an external controller device (e.g., amobile device with a UII) and, in response to such a connection,generate a virtual depiction of the UII that may be displayed on thecomputer system running the target application. In embodiments, avirtual depiction of the target application's interface may be displayedon the external controller device that is communicatively coupled to thecomputer system hosting the target application (e.g., a virtualdepiction of the target application's interface may be displayed alongwith the UII on the external controller device). The virtual depictionsmay be used to facilitate the use of drag-and-drop tools to createassociations between the target application's computing functions andthe UII's elements. For example, a virtual depiction of the UII may bedisplayed on the computer hosting the target application, and a user maydrag and drop the target application's computing function onto a virtualdepiction of a UII element. For example, the user may drag and drop the“save” computing function from the target application onto element 110A,and thereafter, the user may execute the “save” function of the targetapplication by interacting with element 110A. Each element 110A-J may beassociated with a different computing function, or a set of computingfunctions, of one or more target applications.

In embodiments, the user input interface may include a peripheral devicecoupled to the computer system running the target application, such asan LED/LCD keyboard. In such embodiments, the size/shape of elements maynot be customizable, but the appearance (e.g., backlighting, color,etc.) and location of the elements may be alterable according to user orgenerator specifications. For example, in such embodiments, the user mayassociate the target application's computing functions with the physicalelements of the peripheral device. In such embodiments, the controlpanel 105 may be used to alter the appearance of the UII elementsaccording to the user or UII generator's specifications. For example, ifthe embodiment employs an LED keyboard, the control panel 105 may beused to change the brightness, color, or other attributes of theparticular element (e.g., key) according to the user's specifications oraccording to the UII generator's specifications. For example, the useror the UII generator may specify that the F12 key on an LED keyboardshould be associated with the print function of the target application,and that the F12 key should glow orange at 50% brightness.

Turning now to FIG. 1B, depicted is a block diagram of an examplecomputing environment 101 in which embodiments of the present disclosuremay be implemented. In embodiments, a computer system 150 may becommunicatively coupled to an external controller device 175 viaconnection 190. Computer system 150 may be, for example, a desktopcomputer, a medical imaging device, a laptop, or any other computingdevice capable of running an instance of an operating system anddisplaying a GUI, and may correspond to, for example, computer 602 ofFIG. 6. External controller device 175 may be, for example, a computingtablet, smart phone, IPAD, or other computing device with a touchscreen,and may correspond to, for example, external controller device 620 ofFIG. 6. Connection 190 may be, for example, a USB connection, WIFIconnection, BLUETOOTH connection, or any other physical or non-physicalcommunicative connection with the computer system 150. In embodiments,connection 190 may be achieved using any manner of network, such as, forexample, the network 640 of FIG. 6.

Computer system 150 may include an operating system 155, and operatingsystem 155 may be capable of running one or more target applications,such as target application 157. In addition, operating system 155 may becapable of executing computing functions native to the operating system,such as functions 152A-B. Computing functions native to the operatingsystem 155 may include, for example, a system shutdown sequence,functions to start or terminate an application, or any other functiontypically associated with an operating system, such as, for example,WINDOWS, LINUX, MACOS, etc. Functions 152A-B may be associated with GUIelements (e.g., icons, menus, buttons, etc.), hotkey combinations,command line inputs, etc.

Target application 157 may run on operating system 155 and utilize theresources of computer system 150. In embodiments, a target applicationmay be, for example, a medical image viewing program, a word processor,a web browser, or any other application capable of being controlled byan external controller device 175. Target application 157 may include agraphical user interface (GUI) 160 for receiving user input anddisplaying visual output. User input may be received via userinteraction with the GUI 160 to execute computing function 165. Inembodiments, computing function 165 may be, for example, an icon, amenu, a button, or any other interactive GUI element. In embodiments,user input may be received by the target application 157, but not viathe GUI 160, to execute computing functions 170A-B. In embodiments,computing functions 170A-B may be associated with hotkey combinations,command line inputs, etc. Computing functions 165 and 170A-B maycorrespond to, for example, computing functions 612 A-B of FIG. 6.

UII 180 may run on external controller device 175 and may correspond toUII 630 of FIG. 6. UII 180 may include interactive visual elements185A-B, and visual elements 185A-B may correspond to elements 632A-B ofFIG. 6. Visual elements 185A-B may be associated with computingfunctions 152A-B, 165, and 170A-B in such a way (e.g., using APIs,macros, etc.) that a user interaction with an element 185A-B may causethe execution of one or more of computing functions 152A-B, 165, and170A-B, as described herein.

Turning now to FIG. 2, illustrated is a flowchart of method 200 forgenerating an element of a user input interface, the element associatedwith a computing function, according to embodiments. At 205, a targetcomputing function is identified. For example, a user may identify aparticular program command/input (e.g., computing function). Forexample, a user may select a computing function, or set of computingfunctions, in an image viewing program that saves a particular image ina particular format to a particular location with a descriptive tagdescribing the image in the filename. For example, in a medical imagingenvironment, the command may save an X-ray image of a fractured humerusin .tiff format to a file folder containing a particular patient'smedical chart, and the file name may be“[root_file_name]_fractured_humerus_xray.tiff.”

At 210, a UII element is generated. Specifications for the UII elementmay be defined by the user or by the UII generator (e.g., the UIIgenerator 668 of FIG. 6). For example, the user may specify and/or alterthe size, shape, color, label, font size of the text label, font type,location, etc., or the element may be automatically generated by the UIIgenerator. In embodiments, the UII generator may use informationincluded in the user's computing function profile or, in the event thatthe user has no computing function profile or a limited computingfunction profile, the UII generator may use conditions related to thetarget application (e.g., the type of file opened in the targetapplication, the type of computing functions being executed, etc.).Information included in the user's computing function profile mayinclude information pertinent to creating an optimal UII configurationfor a particular user. Pertinent information may include, for example,whether the user is right or left-handed, whether the user has a visionimpairment, the user's job title, the user's job role, the user'spreferences, computing functions frequently executed by the user, etc.

At 215, a function-to-element association is established. Establishing afunction-to-element association may include creating a cross-applicationexecution routine (e.g., API, macro, etc.) so that when a particularelement of the UII is interacted with, the associated computing functionof the target application is executed. In embodiments, sequences ofcomputing functions may be created and associated with a single UIIelement. For example, in an environment where a serum proteinelectrophoresis (SPEP) graph is to be fractionated and quantified,interacting with a single UII element may cause the SPEP graph to befractionated by curve minimums, and the areas under the graph's curvesand between the minimums to be identified and quantified (e.g., usingintegral calculations). This may reduce the number of computingfunctions and/or shortcuts that must be executed, and/or the number ofelements that must be interacted with to achieve the desired outcome.

At 220, the function-to-element association may be stored in anassociation library, such as the association library 676 of FIG. 6. Inembodiments, stored associations may be further associated with one ormore conditions, and thereby be used to automatically generate UIIlayouts and/or refine preexisting UII layouts.

At 225, it is determined whether the user wants to modify the UIIlayout. In embodiments, once a UII element is generated, the user may beasked whether he/she wishes to alter the element'sattributes/specifications. Attributes and specifications may be blank bydefault, preset according to a standard, dictated by conditions, or theymay be populated according to the user's most frequently used elementattributes/specifications. An element's attributes and specificationsmay include, for example, the element's location on the UII, color,size, shape, text size, text font, etc. In embodiments, the user mayfurther specify tactile or other feedback mechanisms. For example, inembodiments, the external controller device running the UII may providelocalized vibrations or other sensations in response to a userinteraction with a particular element. For example, the externalcontroller device running the UII may include a plurality of vibrationmodules correlating to locations on the touchscreen of the device, andthe vibration module or set of vibration modules most closelycorresponding to the location of an element the user interacts with mayvibrate in response to a user's interaction. In embodiments, the usermay specify visual feedback mechanisms. For example, in embodiments,when an element is interacted with, the element may change color, size,shape, the shape of associated text, display an animation (e.g. theelement may “shake,” exhibit a radial pulse, bounce, bulge, etc.), etc.to alert the user and confirm the interaction.

If at 225, it is determined that the user wants to modify the UIIlayout, the UII is adjusted according the user's specifications at 230.In embodiments, modifications/adjustments may include an alteration inone or more elements' location, size, shape, label font size, color,etc.

At 235, it is determined whether the user wants to generate anadditional UII element. The determination may be made via a dialoguebox, receiving input from the user to manually create an additionalelement, receiving a voice command from the user to generate anadditional element, etc.

Referring now to FIG. 3, illustrated is a flowchart of a method forgenerating a user input interface layout based on conditions included incomputing function profiles, according to embodiments. At 305,information about a user is received. The information may include, forexample, a user identification and/or a set of conditions associatedwith a user. User identification may include a user's logon credentials,a voice print identification of the user (e.g., an audio sample obtainedvia a microphone attached to a computer, such as the computer 602 ofFIG. 6), a visual identification of the user (e.g., a picture obtainedvia a camera attached to a computer, such as the computer 602 of FIG.6), etc. Conditions may include, for example, user attributes relevantto generating a UII layout. Attributes may include, for example, whetherthe user is left or right-handed, the user's job title, job role,whether the user is visually impaired, specifics regarding a visualimpairment (e.g., colorblindness, degree of myopia, blindness, maculardegeneration, retinal detachment, nerve damage, etc.), whether the userhas a physical impairment (e.g., missing limb, missing digits, motorfunction impairments, nerve damage, etc.), the type of computingfunctions the user uses most often, or any other attribute or conditionmentioned herein or that may be relevant to generating a UII layout. Inembodiments, the information may be a computing function profilecontaining a list of conditions already associated with a particularuser.

At 310, it is determined whether the user is associated with a computingfunction profile. In embodiments, a computing function profile library,such as the profile library 674 of FIG. 6, may be queried to determinewhether the user is associated with an existing computing functionprofile.

If, at 310, it is determined that the user is not associated with acomputing function profile, a computing function profile may begenerated at 315, according to information received at 305. For example,a computing function profile may be generated that stores associationsbetween the user identification and conditions relevant to the user. Forexample, if a user's identification (e.g., logon username, employeeidentification, etc.) is 24601, and the information includes conditionsof the user being left-handed, colorblind, and a medical technologist,then a computing function profile for user 24601 may be generated, andassociations to the pertinent conditions (e.g., that the user isleft-handed, colorblind, and a medical technologist) may be stored inthe computing function profile. The user's computing function profilemay be stored in a profile library, as discussed herein.

At 320, the conditions included in the computing function profile may becompared to conditions listed in a dynamic database of conditions. Inembodiments, a dynamic database of conditions, such as the conditionlibrary 672 of FIG. 6, may include a dynamic list of the conditionsassociated with a plurality of users and/or a preset list of standard orcommon conditions. The conditions included in the dynamic database ofconditions may be associated with function-to-element associations, suchas the associations included in association library 676 of FIG. 6. Inembodiments, comparisons may include simple condition-to-conditioncomparisons (e.g., each condition in the computing profile is comparedto each condition included in the dynamic list of conditions), ormulti-condition comparisons (e.g., sets of one or more comparisons arecompared to one or more conditions in the dynamic list of conditions) todetermine a similarity between the conditions in the user's computingfunction profile and the function-to-element associations and/orattributes of UII elements associated with conditions in the dynamiclist of conditions. Similarities may be employed to determine whichconditions and may be most relevant to creating an optimized UII layoutfor a particular user by analyzing the relationships between conditionsand their related function-to-element associations.

At 325, it is determined whether the similarity meets a threshold. Inembodiments, a similarity may be a percentage, a value, a distancemetric result, standard deviation, confidence interval, statisticalcluster valuation, etc. In embodiments, a threshold may be preset,defined by a user, or it may be determined using a statistical analysis,such as a bell curve, Poisson distribution, ANOVA/ANCOVA analysis, etc.For example, a threshold for the similarity of condition X may be set at93% of total users; therefore, if 93% of all user profiles withcondition X utilize a particular function-to-element association, or ifthe UII elements of 93% of users share an attribute (e.g., the elementshave the same color, label font size, layout, etc.), then the similaritymay be determined to meet the threshold.

If, at 325, the similarity meets the threshold, then the condition andits related function-to-element association may be used when generatinga UII layout at 330. For example, if the similarity between condition Yand element attribute Z meets the threshold, then element attribute Zmay be used when creating the UII elements for a user with condition Y.For example, if condition Y is myopia, element attribute Z is label fontsize of 20, then if the similarity meets the threshold, the UII elementsgenerated for users with myopia may contain labels with a font size of20. In embodiments, a single element may be associated with a pluralityof attributes.

At 335, the elements are positioned on the UII. For example, UIIelements may be positioned in a particular layout, such as, but notlimited to, the layouts depicted in FIG. 1A and FIG. 1B. In embodiments,layouts may take into account ergonomic impacts of various UII layouts.For example, multiple UII layouts may be contemplated, and the UIIlayout with the smallest chance to produce a repetitive motion injurymay be selected.

At 340, it is determined whether the user wants to modify the UIIlayout, as described herein.

If at 340, it is determined that the user wants to modify the UIIlayout, the UII is adjusted according the user's specifications at 345,as described herein. In embodiments, adjustments to the UII may includea determination whether the user wants to generate additional elements,as described herein.

Referring now to FIG. 4, illustrated is a flowchart of a method foradding and removing elements from a UII based on monitored user input,according to embodiments. At 405, a user's input is monitored. A user'sinput may include information regarding the computing functions a userexecutes.

At 410, it is determined whether the executed computing function isassociated with a UII element. For example, it may be determined whetherthe computing function was executed via a UII element, or directly onthe target application's interface.

If, at 410, it is determined that the computing function is notassociated with an element, then it is determined, at 415, whether thefrequency with which the user executes that computing function meets afrequency threshold. A frequency threshold may be, for example, thenumber of times a computing function is executed over a particularperiod of time. In embodiments, a frequency threshold may be the numberof times the user executes a specific computing function during a singlesession of use of a target application. For example, a frequencythreshold may include the number of times a user executes a specificcomputing function over a 30-min period, or a frequency threshold mayinclude the number of times a user executes a specific computingfunction between the time the target application is opened and the timethe target application is closed/terminated. In embodiments, a frequencythreshold may include a real-time, dynamic calculation of the number oftimes a specific computing function is executed as a function of theoverall time a user has been actively using the target application.

If, at 415, it is determined that the frequency threshold has been met,then the computing function is associated with a new UII element at 420.Associating the computing function with a new UII element may includestoring the association in an association library, as described herein.

At 425, the UII layout is adjusted. For example, when a new UII elementis created, a location, size, shape, and label for the element may becreated and/or selected. The attributes/specifications may be designatedby a user, or the attributes/specifications may be chosen by a machinelearning module, such as the machine learning module 660 of FIG. 6,according to similarity thresholds, as described herein. When, forexample, a UII element is eliminated, the attributes/specifications,such as the location, of the remaining UII elements may be updated tocreate an optimized layout.

If, at 410, it is determined that the computing function is associatedwith a UII element, then it is determined, at 430, whether the executionfrequency of the computing function meets a frequency threshold, asdescribed herein.

If, at 430, it is determined that the frequency threshold is not met,then the UII element is removed from the UII at 435. For example, if theUII includes an element associated with a computing function that a userexecutes less frequently over time, the element may be removed from theUII.

At 440, it is determined whether the user wants to modify the UIIlayout, as described herein.

If at 440, it is determined that the user wants to modify the UIIlayout, the UII is adjusted according the user's specifications at 445,as described herein. In embodiments, adjustments to the UII may includea determination whether the user wants to generate additional elements,as described herein.

Referring now to FIG. 5, illustrated is a flowchart of a method 500 forexecuting a computing function via a user input interface element,according to embodiments. At 505, routines to control computingfunctions via a UII are executed. For example, API routines may beexecuted to allow a UII on an external controller device to control thecomputing functions of a target application on a computer system. Forexample, the API routines may allow a user to touch or otherwiseinteract with an icon, or other interactive polygon, on a portablecomputing tablet with a touchscreen, and consequently cause, in responseto the interaction, a computing function of a target application runningon a computer system coupled to the portable computing tablet, to beexecuted.

At 510, user input is received via a UII element. For example, the usermay touch, or otherwise interact with, an icon (e.g., a UII element)displayed on the touchscreen of a portable computing tablet (e.g., anexternal controller device).

At 515, the computing function associated with the UII element isexecuted. A computing function may be, for example, any executablecommand of the target application. Examples of computing functions mayinclude opening a file, saving a file, printing, rotating the contentdisplayed on a monitor, flipping such displayed content, zooming in orout, closing the target application, or any other computing functiontraditionally executed via hotkey combination, clicking through GUImenus, entering command lines into a prompt, etc.

At 520, it is determined whether additional user input is received. Forexample, it is determined whether the user interacted with the same UIIelement again, or another UII element.

As discussed above, some embodiments may use machine learning.Accordingly, an understanding of the embodiments of the presentdisclosure may be aided by describing embodiments of machine learningsystems and the environments in which these systems may operate. FIG. 6illustrates a block diagram of an example computing environment 600 inwhich embodiments of the present disclosure may be implemented.

Consistent with various embodiments, the server 650, the computer 602,and the external controller device 620 may be computer systems. Theserver 650, the computer 602, and the external controller device 620 mayinclude one or more processors 654, 606, and 626 and one or morememories 656, 608, and 628, respectively. The server 650, the computer602, and the external controller device 620 may be configured tocommunicate with each other through an internal or external networkinterface 604, 624, and 652. The network interfaces 604, 624, and 652may be, e.g., modems or network interface cards. The server 650, thecomputer 602, and the external controller device 620 may be equippedwith a display or monitor (not pictured). Additionally, the server 650,the computer 602, and the external controller device 620 may includeoptional input devices (e.g., a keyboard, mouse, scanner, or other inputdevice), and/or any commercially available or custom software (e.g.,browser software, communications software, server software, naturallanguage processing software, search engine and/or web crawlingsoftware, filter modules for filtering content based upon predefinedparameters, etc.). In some embodiments, the server 650, the computer602, and the external controller device 620 may be servers, desktops,laptops, or hand-held devices.

The server 650, the computer 602, and the external controller device 620may be distant from each other and communicate over a network 640. Insome embodiments, the server 650 may be a central hub from which thecomputer 602 and the external controller device 620 can establish acommunication connection, such as in a client-server networking model.Alternatively, the server 650, the computer 602, and the externalcontroller device 620 may be configured in any other suitable networkingrelationship (e.g., in a peer-to-peer configuration or using any othernetwork topology).

In some embodiments, the network 640 can be implemented using any numberof any suitable communications media. For example, the network 640 maybe a wide area network (WAN), a local area network (LAN), an internet,or an intranet. In certain embodiments, the server 650, the computer602, and the external controller device 620 may be local to each other,and communicate via any appropriate local communication medium. Forexample, the server 650, the computer 602, and the external controllerdevice 620 may communicate using a local area network (LAN), one or morehardwire connections, a wireless link or router, or an intranet. In someembodiments, the server 650, the computer 602, and the externalcontroller device 620 may be communicatively coupled using a combinationof one or more networks and/or one or more local connections. Forexample, the computer 602 may be hardwired to the server 650 (e.g.,connected with an Ethernet cable) while the external controller device620 may communicate with the computer 602 and/or server 650 using thenetwork 640 (e.g., over the Internet).

In some embodiments, the network 640 can be implemented within a cloudcomputing environment, or using one or more cloud computing services.Consistent with various embodiments, a cloud computing environment mayinclude a network-based, distributed data processing system thatprovides one or more cloud computing services. Further, a cloudcomputing environment may include many computers (e.g., hundreds orthousands of computers or more) disposed within one or more data centersand configured to share resources over the network 640.

In some embodiments, the computer 602 and the external controller device620 may enable users to submit (or may submit automatically with orwithout user input) information (e.g., computing function profiles,function-to-element associations, user behavior data, user preferences,etc.) to the server 650 to perform UII element generation, UII layoutgeneration, computing function profile generation, user inputmonitoring, or any of the methods described herein.

In some embodiments, the server 650 may include a machine learningmodule 660. The machine learning module 660 may include an associationcreator 662, a profile digester 664, and a UII generator 668. Themachine learning module 660 may include numerous subcomponents, such asa natural language processing system, a statistical comparator ordistance metric analysis system, etc. Examples of methods that may beemployed by the machine learning module 660 and its subcomponents arediscussed in more detail in reference to FIGS. 2-5.

The association creator 662 may be configured to create associationsbetween elements 632A-B of the UII 630 and computing functions 612A-B ofthe target application 610. In embodiments, any number of targetapplications 610, computing functions 612A-B, UIIs 630, and Elements632A-B may be present or generated, as appropriate. When afunction-to-element association is created, a user interaction with anelement 632A-B will consequently cause the execution of the associatedcomputing function 612A-B. For example, if element 632A is associatedwith computing function 612B, a user interaction with element 632A willexecute computing function 612B. For example, if target application 610is a word processor, element 632A is an element displayed on UII 630 andis associated with computing function 612A, and computing function 612Acauses a footnote including a timestamp to be created, then a userinteraction with element 632A will cause the word processor to create atimestamp footnote. Elements 632A-B may be associated with a singlecomputing function 612A-B, or the elements 632A-B may be associated withany number of computing functions 612A-B, and the computing functions612A-B may be combined in any order. Computing functions associated withUII elements may be executed on the target application 610 of computer602 via APIs, macros, or any other means of associating the input of theexternal controller device's UII to the input of a target application.

The UII generator 668 may be configured to analyze information from userinputs, computing function profiles, function-to-element associations,etc. The UII generator 668 may include one or more modules or units,and/or may utilize the profile digester 664, to perform certainfunctions (e.g., parse and index information in computing profiles,process unstructured data into structured data via natural languageprocessing techniques, identify a user, identify conditions associatedwith a user, monitor user behavior, etc.), as discussed in more detailin reference to FIGS. 2-5.

In some embodiments, the server 650 may include a database 670. Thedatabase 670 may be located in storage 658, or may be locatedseparately. Database 670 may be a dynamic database, configured to storeconditions (e.g., user attributes, target application attributes,application substrate attributes, etc.) in a condition library 672.Conditions may be indexed/referenced to function-to-elementassociations, particular users, etc. Using the example of a medicalimaging application as a target application 610, conditions may includewhether the user is right or left-handed, whether the user isvision-impaired, the job title or role of the user, whether the medicalimaging application is an MRI viewing application versus an X-rayapplication versus a histological slide viewing application, etc.,

In some embodiments, the database 670 may include a profile library 674.The profile library 674 may be configured to store computing functionprofiles containing information regarding any number of users. Computingfunction profiles may be indexed/referenced to, and/or include,conditions, function-to-element associations, etc. Computing functionprofiles may further include user-specific preferences. For example, aparticular user may prefer a particular arrangement/layout of UIIelements 632A-B, and that preference may be stored in the user'scomputing function profile. In such a case, even if the machine learningmodule 660 determines that the user may benefit from a new UII elementor an alternative layout, the preference stored in the user's computingfunction profile may inform, or override, the machine learning module toprevent the new UII element and/or layout from being generated.

In some embodiments, the server 650 may include an association library676. The association library 676 may be configured to store thefunction-to-element associations of users. The association library 676may be further configured to track usage data for each association todetermine how useful an association may be (e.g., how often the elementis used to execute the associated computing function, how many useractions are conserved as a result of the association, etc.). Theassociations stored in association library 676 may be indexed/referencedto the computing profiles of profile library 674 and/or the conditionsof condition library 672. Consequently, the machine learning module 660may utilize the database 670 and its components to monitor user behaviorand suggest function-to-element associations based on frequency ofelement use, user preference, and conditions.

While FIG. 6 illustrates a computing environment 600 with a singleserver 650, a single computer 602, and a single external controllerdevice 620, suitable computing environments for implementing embodimentsof this disclosure may include any number of computers, externalcontroller devices, and servers. The various models, modules, systems,and components illustrated in FIG. 6 may exist, if at all, across aplurality of computers, external controller devices, and servers. Forexample, some embodiments may include two servers. The two servers maybe communicatively coupled using any suitable communications connection(e.g., using a WAN, a LAN, a wired connection, an intranet, or theInternet). The first server may include a machine learning moduleconfigured to create associations, digest computing profiles and otherinformation, and generate UII elements and layouts, and the secondserver may include a database containing conditions, computing profiles,and associations.

It is noted that FIG. 6 is intended to depict the representative majorcomponents of an exemplary computing environment 600. In someembodiments, however, individual components may have greater or lessercomplexity than as represented in FIG. 6, components other than or inaddition to those shown in FIG. 6 may be present, and the number, type,and configuration of such components may vary.

Referring now to FIG. 7, shown is a high-level block diagram of anexample computer system (i.e., computer) 701 that may be configured toperform various aspects of the present disclosure, including, forexample, methods 200/300/400/500, described in FIGS. 2-5, respectively.The example computer system 701 may be used in implementing one or moreof the methods or modules, and any related functions or operations,described herein (e.g., using one or more processor circuits or computerprocessors of the computer), in accordance with embodiments of thepresent disclosure. In some embodiments, the major components of thecomputer system 701 may comprise one or more CPUs 702, a memorysubsystem 704, a terminal interface 712, a storage interface 714, an I/O(Input/Output) device interface 716, and a network interface 718, all ofwhich may be communicatively coupled, directly or indirectly, forinter-component communication via a memory bus 703, an I/O bus 708, andan I/O bus interface unit 710.

The computer system 701 may contain one or more general-purposeprogrammable central processing units (CPUs) 702A, 702B, 702C, and 702D,herein generically referred to as the CPU 702. In some embodiments, thecomputer system 701 may contain multiple processors typical of arelatively large system; however, in other embodiments the computersystem 701 may alternatively be a single CPU system. Each CPU 702 mayexecute instructions stored in the memory subsystem 704 and may compriseone or more levels of on-board cache.

In some embodiments, the memory subsystem 704 may comprise arandom-access semiconductor memory, storage device, or storage medium(either volatile or non-volatile) for storing data and programs. In someembodiments, the memory subsystem 704 may represent the entire virtualmemory of the computer system 701, and may also include the virtualmemory of other computer systems coupled to the computer system 701 orconnected via a network. The memory subsystem 704 may be conceptually asingle monolithic entity, but, in some embodiments, the memory subsystem704 may be a more complex arrangement, such as a hierarchy of caches andother memory devices. For example, memory may exist in multiple levelsof caches, and these caches may be further divided by function, so thatone cache holds instructions while another holds non-instruction data,which is used by the processor or processors. Memory may be furtherdistributed and associated with different CPUs or sets of CPUs, as isknown in any of various so-called non-uniform memory access (NUMA)computer architectures. In some embodiments, the main memory or memorysubsystem 704 may contain elements for control and flow of memory usedby the CPU 702. This may include a memory controller 705.

Although the memory bus 703 is shown in FIG. 7 as a single bus structureproviding a direct communication path among the CPUs 702, the memorysubsystem 704, and the I/O bus interface 710, the memory bus 703 may, insome embodiments, comprise multiple different buses or communicationpaths, which may be arranged in any of various forms, such aspoint-to-point links in hierarchical, star or web configurations,multiple hierarchical buses, parallel and redundant paths, or any otherappropriate type of configuration. Furthermore, while the I/O businterface 710 and the I/O bus 708 are shown as single respective units,the computer system 701 may, in some embodiments, contain multiple I/Obus interface units 710, multiple I/O buses 708, or both. Further, whilemultiple I/O interface units are shown, which separate the I/O bus 708from various communications paths running to the various I/O devices, inother embodiments some or all of the I/O devices may be connecteddirectly to one or more system I/O buses.

In some embodiments, the computer system 701 may be a multi-usermainframe computer system, a single-user system, or a server computer orsimilar device that has little or no direct user interface, but receivesrequests from other computer systems (clients). Further, in someembodiments, the computer system 701 may be implemented as a desktopcomputer, portable computer, laptop or notebook computer, tabletcomputer, pocket computer, telephone, smart phone, mobile device, or anyother appropriate type of electronic device.

It is noted that FIG. 7 is intended to depict the representative majorcomponents of an exemplary computer system 701. In some embodiments,however, individual components may have greater or lesser complexitythan as represented in FIG. 7, components other than or in addition tothose shown in FIG. 7 may be present, and the number, type, andconfiguration of such components may vary.

The programs described herein are identified based upon the applicationfor which they are implemented in a specific embodiment of thedisclosure. However, it should be appreciated that any particularprogram nomenclature herein is used merely for convenience, and thus thedisclosure should not be limited to use solely in any specificapplication identified and/or implied by such nomenclature.

The present invention may be a system, a method, and/or a computerprogram product at any possible technical detail level of integration.The computer program product may include a computer readable storagemedium (or media) having computer readable program instructions thereonfor causing a processor to carry out aspects of the present invention.

The computer readable storage medium can be a tangible device that canretain and store instructions for use by an instruction executiondevice. The computer readable storage medium may be, for example, but isnot limited to, an electronic storage device, a magnetic storage device,an optical storage device, an electromagnetic storage device, asemiconductor storage device, or any suitable combination of theforegoing. A non-exhaustive list of more specific examples of thecomputer readable storage medium includes the following: a portablecomputer diskette, a hard disk, a random access memory (RAM), aread-only memory (ROM), an erasable programmable read-only memory (EPROMor Flash memory), a static random access memory (SRAM), a portablecompact disc read-only memory (CD-ROM), a digital versatile disk (DVD),a memory stick, a floppy disk, a mechanically encoded device such aspunch-cards or raised structures in a groove having instructionsrecorded thereon, and any suitable combination of the foregoing. Acomputer readable storage medium, as used herein, is not to be construedas being transitory signals per se, such as radio waves or other freelypropagating electromagnetic waves, electromagnetic waves propagatingthrough a waveguide or other transmission media (e.g., light pulsespassing through a fiber-optic cable), or electrical signals transmittedthrough a wire.

Computer readable program instructions described herein can bedownloaded to respective computing/processing devices from a computerreadable storage medium or to an external computer or external storagedevice via a network, for example, the Internet, a local area network, awide area network and/or a wireless network. The network may comprisecopper transmission cables, optical transmission fibers, wirelesstransmission, routers, firewalls, switches, gateway computers, and/oredge servers. A network adapter card or network interface in eachcomputing/processing device receives computer readable programinstructions from the network and forwards the computer readable programinstructions for storage in a computer readable storage medium withinthe respective computing/processing device.

Computer readable program instructions for carrying out operations ofthe present invention may be assembler instructions,instruction-set-architecture (ISA) instructions, machine instructions,machine dependent instructions, microcode, firmware instructions,state-setting data, or either source code or object code written in anycombination of one or more programming languages, including an objectoriented programming language such as Smalltalk, C++ or the like, andconventional procedural programming languages, such as the “C”programming language or similar programming languages. The computerreadable program instructions may execute entirely on the user'scomputer, partly on the user's computer, as a stand-alone softwarepackage, partly on the user's computer and partly on a remote computeror entirely on the remote computer or server. In the latter scenario,the remote computer may be connected to the user's computer through anytype of network, including a local area network (LAN) or a wide areanetwork (WAN), or the connection may be made to an external computer(for example, through the Internet using an Internet Service Provider).In some embodiments, electronic circuitry including, for example,programmable logic circuitry, field-programmable gate arrays (FPGA), orprogrammable logic arrays (PLA) may execute the computer readableprogram instructions by utilizing state information of the computerreadable program instructions to personalize the electronic circuitry,in order to perform aspects of the present invention.

Aspects of the present invention are described herein with reference toflowchart illustrations and/or block diagrams of methods, apparatus(systems), and computer program products according to embodiments of theinvention. It will be understood that each block of the flowchartillustrations and/or block diagrams, and combinations of blocks in theflowchart illustrations and/or block diagrams, can be implemented bycomputer readable program instructions.

These computer readable program instructions may be provided to aprocessor of a general purpose computer, special purpose computer, orother programmable data processing apparatus to produce a machine, suchthat the instructions, which execute via the processor of the computeror other programmable data processing apparatus, create means forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks. These computer readable program instructionsmay also be stored in a computer readable storage medium that can directa computer, a programmable data processing apparatus, and/or otherdevices to function in a particular manner, such that the computerreadable storage medium having instructions stored therein comprises anarticle of manufacture including instructions which implement aspects ofthe function/act specified in the flowchart and/or block diagram blockor blocks.

The computer readable program instructions may also be loaded onto acomputer, other programmable data processing apparatus, or other deviceto cause a series of operational steps to be performed on the computer,other programmable apparatus or other device to produce a computerimplemented process, such that the instructions which execute on thecomputer, other programmable apparatus, or other device implement thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

The flowchart and block diagrams in the Figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods, and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof instructions, which comprises one or more executable instructions forimplementing the specified logical function(s). In some alternativeimplementations, the functions noted in the block may occur out of theorder noted in the Figures. For example, two blocks shown in successionmay, in fact, be executed substantially concurrently, or the blocks maysometimes be executed in the reverse order, depending upon thefunctionality involved. It will also be noted that each block of theblock diagrams and/or flowchart illustration, and combinations of blocksin the block diagrams and/or flowchart illustration, can be implementedby special purpose hardware-based systems that perform the specifiedfunctions or acts or carry out combinations of special purpose hardwareand computer instructions.

What is claimed is:
 1. A method for interacting with a computer via auser input interface on a mobile device, the method comprising:executing, on the computer, a set of routines to control a plurality ofcomputing functions via the user input interface; evaluating a pluralityof interactive elements of a target application on the computer todetermine a subset of the plurality of computing functions; associatinga selected computing function, from the subset of the plurality ofcomputing functions, of the computer with at least one element of theuser input interface, such that the at least one element controls theselected computing function; storing the association of the selectedcomputing function with the at least one element of the user inputinterface, wherein storing the association further comprises relatingthe association to a condition in a dynamic database of conditions,wherein each condition is related to one or more associations, andwherein each condition comprises a specific user, a user role, a userattribute, a computer program, a set of computing functions, a dominanthand for the specific user, and a set of ergonomic data for the specificuser; activating, in response to an input from a first user, aconfiguration mode; scanning one or more menus of the target applicationto identify a second subset of the plurality of computing functions;generating a graphical representation of the second subset of theplurality of computing functions; and receiving, from the first userduring the configuration mode, a set of configuration adjustments forthe user input interface, wherein the set of configuration adjustmentsincludes user-specified attributes for the size, shape, color, label,and font type and size of the label text of each of the at least oneelement of the user input interface and a user selection of one or moreof the computing functions of the second subset to generate anassociation with a second element of the user input interface.
 2. Themethod of claim 1, further comprising: displaying the at least oneelement associated with the computing function at a location on the userinput interface to account for the dominant hand for the specific userand the set of ergonomic data for the specific user by minimizing thehand and finger motions of the specific user; receiving inputinteracting with the location on the user input interface; and executingthe selected computing function associated with the at least one elementof the user input interface.
 3. The method of claim 2, wherein thestoring the association comprises storing an indication to display theat least one element at the location on the user input interface andwherein the displaying the element at the location occurs in response tothe stored indication.
 4. The method of claim 2, further comprising:monitoring user input; determining, based upon the monitored input, thatthe frequency of the user's execution of a second computing functionmeets a threshold; associating the second computing function with asecond element; and displaying the second element on the user inputinterface.
 5. The method of claim 2, further comprising: monitoring userinput; determining, based upon the monitored input, that the frequencyof the user's execution of a computing function does not meet athreshold; terminating the association of the computing function to theelement; and removing the element from the display of the user inputinterface.
 6. The method of claim 2, wherein the element is an icondisplayed on a touchscreen.
 7. The method of claim 6, wherein thecondition comprises an exam type, an imaging modality, a body part, anda pathology.
 8. The method of claim 1, wherein the method furthercomprises: receiving information about the first user; analyzing theinformation to generate a computing function profile tailored to thefirst user, the computing function profile including a set ofconditions; determining, based on the dynamic database of conditions,the associations related to the set of conditions; associating, based onthe one or more associations related to the set of conditions, a set ofcomputing functions with a set of user input interface elements; anddisplaying the set of user input interface elements on the user inputinterface.
 9. The method of claim 8, further comprising: monitoring thedynamic database of conditions; altering, based on changes in thedynamic database of conditions, the set of user input interface elementsdisplayed on the user input interface.
 10. The method of claim 1,wherein the user input interface is a touchscreen.
 11. The method ofclaim 1, wherein the at least one interactive element is associated witha graph fractionation and quantification function.
 12. The method ofclaim 1, wherein the computing functions include medical image viewingroutines.
 13. The method of claim 1, wherein the set of ergonomic datafor the specific user includes a set of physical and visual impairments.14. A system for interacting with a computer via a user input interfaceon a mobile device, the system comprising: a memory with programinstructions stored thereon; and a processor in communication with thememory, wherein the system is configured to perform a method, the methodcomprising: executing, on the computer, a set of routines to control aplurality of computing functions via the user input interface;evaluating a plurality of interactive elements of a target applicationon the computer to determine a subset of the plurality of computingfunctions; associating a selected computing function, from the subset ofthe plurality of computing functions, of the computer with at least oneelement of the user input interface, such that the at least one elementcontrols the selected computing function; storing the association of theselected computing function with the at least one element of the userinput interface, wherein storing the association further comprisesrelating the association to a condition in a dynamic database ofconditions, wherein each condition is related to one or moreassociations, and wherein each condition comprises a specific user, auser role, a user attribute, a computer program, a set of computingfunctions, a dominant hand for the specific user, and a set of ergonomicdata for the specific user; activating, in response to an input from afirst user, a configuration mode; scanning one or more menus of thetarget application to identify a second subset of the plurality ofcomputing functions; generating a graphical representation of the secondsubset of the plurality of computing functions; and receiving, from thefirst user during the configuration mode, a set of configurationadjustments for the user input interface, wherein the set ofconfiguration adjustments includes user-specified attributes for thesize, shape, color, label, and font type and size of the label text ofeach of the at least one element of the user input interface and a userselection of one or more of the computing functions of the second subsetto generate an association with a second element of the user inputinterface.
 15. The system of claim 14, wherein the method furthercomprises: displaying the at least one element associated with thecomputing function at a location on the user input interface to accountfor the dominant hand for the specific user and the set of ergonomicdata for the specific user by minimizing the hand and finger motions ofthe specific user; receiving input interacting with the location on theuser input interface; and executing the selected computing functionassociated with the at least one element of the user input interface.16. The system of claim 15, wherein the storing the associationcomprises storing an indication to display the element at the locationon the user input interface and wherein the displaying the element atthe location occurs in response to the stored indication.
 17. The systemof claim 14, wherein the method further comprises: receiving informationabout the first user; analyzing the information to generate a computingfunction profile tailored to the first user, the computing functionprofile including a set of conditions; determining, based on the dynamicdatabase of conditions, the associations related to the set ofconditions; associating, based on the one or more associations relatedto the set of conditions, a set of computing functions with a set ofuser input interface elements; and displaying the set of user inputinterface elements on the user input interface.
 18. The system of claim17, wherein the method further comprises: monitoring the dynamicdatabase of conditions; altering, based on changes in the dynamicdatabase of conditions, the set of user input interface elementsdisplayed on the user input interface.
 19. The system of claim 14,wherein the set of ergonomic data for the specific user includes a setof physical and visual impairments.
 20. A computer program product forinteracting with a computer via a user input interface on a mobiledevice, the computer program product comprising a computer readablestorage medium having program instructions embodied therewith, theprogram instructions executable by a device to cause the device to:executing, on the computer, a set of routines to control a plurality ofcomputing functions via the user input interface; evaluating a pluralityof interactive elements of a target application on the computer todetermine a subset of the plurality of computing functions; associatinga selected computing function, from the subset of the plurality ofcomputing functions, of the computer with at least one element of theuser input interface, such that the at least one element controls theselected computing function; store the association of the selectedcomputing function with the at least one element of the user inputinterface, wherein storing the association further comprises relatingthe association to a condition in a dynamic database of conditions,wherein each condition is related to one or more associations, andwherein each condition comprises a specific user, a user role, a userattribute, a computer program, a set of computing functions, a dominanthand for the specific user, and a set of ergonomic data for the specificuser; activate, in response to an input from a first user, aconfiguration mode; scan one or more menus of the target application toidentify a second subset of the plurality of computing functions;generate a graphical representation of the second subset of theplurality of computing functions; and receiving, from the first userduring the configuration mode, a set of configuration adjustments forthe user input interface, wherein the set of configuration adjustmentsincludes user-specified attributes for the size, shape, color, label,and font type and size of the label text of each of the at least oneelement of the user input interface and a user selection of one or moreof the computing functions of the second subset to generate anassociation with a second element of the user input interface.